From 2e372626d7dcfa8267de0980c4ddecc9e571d106 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Sun, 31 Dec 2006 16:54:56 +0000 Subject: [PATCH] Use the right object when disconnecting from the GtkRecentManager::changed 2006-12-31 Emmanuele Bassi * gtk/gtkrecentchoosermenu.c (set_recent_manager): Use the right object when disconnecting from the GtkRecentManager::changed signal; save us a few indirections using a variable. svn path=/trunk/; revision=16999 --- ChangeLog | 6 ++++++ gtk/gtkrecentchoosermenu.c | 26 ++++++++++++++++---------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 04ce75206a..8a4de7cb44 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-12-31 Emmanuele Bassi + + * gtk/gtkrecentchoosermenu.c (set_recent_manager): Use the + right object when disconnecting from the GtkRecentManager::changed + signal; save us a few indirections using a variable. + 2006-12-31 Emmanuele Bassi * gtk/gtkrecentchoosermenu.c: Move the signal and idle diff --git a/gtk/gtkrecentchoosermenu.c b/gtk/gtkrecentchoosermenu.c index 12b9ca274e..893348e8f8 100644 --- a/gtk/gtkrecentchoosermenu.c +++ b/gtk/gtkrecentchoosermenu.c @@ -264,7 +264,9 @@ gtk_recent_chooser_menu_dispose (GObject *object) if (priv->manager_changed_id) { - g_signal_handler_disconnect (priv->manager, priv->manager_changed_id); + if (priv->manager) + g_signal_handler_disconnect (priv->manager, priv->manager_changed_id); + priv->manager_changed_id = 0; } @@ -1157,21 +1159,25 @@ static void set_recent_manager (GtkRecentChooserMenu *menu, GtkRecentManager *manager) { - if (menu->priv->manager) + GtkRecentChooserMenuPrivate *priv = menu->priv; + + if (priv->manager) { - g_signal_handler_disconnect (menu, menu->priv->manager_changed_id); - menu->priv->manager = NULL; + if (priv->manager_changed_id) + g_signal_handler_disconnect (priv->manager, priv->manager_changed_id); + + priv->manager = NULL; } if (manager) - menu->priv->manager = manager; + priv->manager = manager; else - menu->priv->manager = gtk_recent_manager_get_default (); + priv->manager = gtk_recent_manager_get_default (); - if (menu->priv->manager) - menu->priv->manager_changed_id = g_signal_connect (menu->priv->manager, "changed", - G_CALLBACK (manager_changed_cb), - menu); + if (priv->manager) + priv->manager_changed_id = g_signal_connect (priv->manager, "changed", + G_CALLBACK (manager_changed_cb), + menu); /* (re)populate the menu */ gtk_recent_chooser_menu_populate (menu); } -- 2.30.2